Идея путей в том путь это набор фигур или форм, которые могут быть объединены для рисования других фигур или для создания областей обрезки. Создается путь путем вызова функции:
CDC::BeginPath BOOL BeginPath( );
Дальше следуют команды, а заканчивается путь вызовом.
CDC::EndPath BOOL EndPath( );
Давайте создадим приложение MFC AppWizard с именем TTestPath как SDI. Естественно, что нас будет интересовать функция OnDraw для работы с CDC.
////////////////////////
// CTestPathView drawing
void CTestPathView::OnDraw(CDC* pDC)
{
CTestPathDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
Мы изменим ее для того, что бы с помощью пути задать область обрезки.
///////////////////////////
// CTestPathView drawing
void CTestPathView::OnDraw(CDC* pDC)
{
CTestPathDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->BeginPath();
pDC->MoveTo(CPoint(10,10));
pDC->LineTo(CPoint(100,10));
pDC->LineTo(CPoint(100,100));
pDC->LineTo(CPoint(10,100));
pDC->LineTo(CPoint(10,10));
pDC->EndPath();
pDC->SelectClipPath(RGN_COPY);
CPen penRed(PS_SOLID,1,RGB(255,0,0));
CPen *oldPen;
oldPen=pDC->SelectObject(&penRed);
pDC->Rectangle(CRect(CPoint(10,10),CPoint(100,100)));
for (int x=0;x<100;x++)
{
pDC->MoveTo(10,10);
pDC->LineTo(200,x*20);
}
pDC->SelectObject(oldPen);
}
Здесь мы создаем область обрезки в виде прямоугольника, а потом обрисовываем эту область и начинаем заполнять линиями. Результат будет вот такой.
